package fr.dauphine.td3.ctl;

import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import fr.dauphine.td3.bdd.UtilisateurDAO;
import fr.dauphine.td3.emp.Utilisateur;

@Controller
@RequestMapping("utilisateur")
public class UtilisateurController {
	
	@Autowired
	private UtilisateurDAO utilisateurDAO;
	
	
	@RequestMapping(method=RequestMethod.POST)
	public String ajouterutilisateur (@RequestParam(value="avalide", required=false) String[] avalide, @ModelAttribute("utilisateur") Utilisateur utilisateur, BindingResult result, ModelMap model) {
		
		int administrateur = 0;
		
		if (avalide != null) {
			administrateur = 1;	
		}
		
		utilisateur.setAdministrateur(administrateur);
		
		//L'utilisateur conserve le meme mot de passe
		if (utilisateur.getPassword().length() == 0) {
			
			if (utilisateur.getId().length() != 0) {
				Utilisateur utempo = utilisateurDAO.get(utilisateur.getId());
				utilisateur.setPassword(utempo.getPassword());
			} else {
				utilisateur.setPassword(DigestUtils.md5Hex("defaut"));
			}
			
		} else {
			String newPassword = DigestUtils.md5Hex(utilisateur.getPassword());	
			utilisateur.setPassword(newPassword);
		}
		
		utilisateurDAO.save(utilisateur);
		model.addAttribute("utilisateur", utilisateur);
		
		return "redirect:administration.html";
	}
	
	@RequestMapping(method=RequestMethod.GET)
	public String affichage(@RequestParam(value="id", required = false) String id, ModelMap model) {
		
		Utilisateur u = null;
		
		if (!id.equals("-1")) {
			u = utilisateurDAO.get(id);
		}
		else {
			u = new Utilisateur();
		}
		
		model.addAttribute("utilisateur", u);
		
		return "utilisateur";
		
	}

}
